// this 是执行的时候去查找的
// 函数
function fn1(){
  console.log(this)
}
fn1() // window

// call
fn1.call({ x:100 })

// bind 返回一个新的函数 需要在执行
const fn2 = fn1.bind({x:200})
fn2() 

const zhangsan = {
  name: '张三',
  sayHi(){
    // this 即当前对象
    console.log(this)
  },
  wait(){
    setTimeout(function(){
      // this == window
      console.log(this)
    })
  }
}
zhangsan.wait()


const lisi = {
  name: '李四',
  sayHi(){
    // this 即当前对象
    console.log(this)
  },
  waitAgain(){
    setTimeout(()=>{
    // this 即当前对象
      console.log(this)
    })
  }
}
lisi.waitAgain()

class People{
  constructor(name){
    this.name = name
    this.age = 20
  }
  sayHi(){
    console.log(this)
  }
}
const wangwu = new People('王五')
wangwu.sayHi() // wangwu 的对象